package com.ims.core.doc.vo.bwapi;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 进项发票采集接口对象
 *
 * @author IMS
 * @date 2024-10-24
 */
public class InvoiceForinvoicemanageadd implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 发票类型:
     * 99其他发票
     * 01增值税专用发票
     * 03机动车销售统一发票
     * 04增值税普通发票
     * 08增值税电子专用发票
     * 10增值税电子普通发票
     * 11增值税普通发票(卷式)
     * 14道路通行费电子普通发票
     * 15二手车销售统一发票
     * 31数电票(增值税专用发票)
     * 32数电票(普通发票)
     * 1002火车票
     * 1003航空电子客票行程单
     * 1004出租车发票
     * 1005通用定额发票
     * 1006公路水路客运发票
     * 1007通用机打发票
     * 1008过路费发票
     * 1009区块链电子发票
     * 1010火车票退票费
     * 1011医疗电子票据(住院)
     * 1012医疗电子票据(门诊)
     * 1013通用(电子)发票
     * 51数电票(铁路电子客票)
     * 61数电票(航空运输电子客票行程单)
     * 83数电票(机动车销售统一发票)
     * 84数电票(二手车销售统一发票)
     * 85数电纸质发票(增值税专用发票)
     * 86数电纸质发票(普通发票)
     * 1014完税凭证
     * 1016 航空运输电子客票行程单退改费 */
    private String invoiceType;

    /** 发票号码；51-数电票（铁路电子客票）、61-数电票（航空运输电子客票行程单）上传时非必填，其他票种必填；1003-航空运输电子客票行程单电子客票号、1016-航空运输电子客票行程单退票费的电子客票号； */
    private String invoiceNo;

    /**
     * 全电发票号码 全电铁路和全电航空需要传
     */
    private String electronicNo;

    /**
     * 燃油附加费；当上传61-数电票（航空运输电子客票行程单）时，需从此字段上传燃油附加费，非必填；1003-航空电子客票行程单和1016-航空电子客票行程单退票费的燃油附加费字段，当上传此票种时，此字段必填；
     */
    private BigDecimal oilSurcharge;

    /**
     * 国内国际标识
     */
    private String domesticOrInternational;

    /**
     * 发票代码，税控发票必填，数电发票非必填
     */
    private String invoiceCode;

    /**
     * 开票日期：YYYY-MM-DD
     */
    private String invoiceDate;

    /**
     * 校验码
     */
    private String checkCode;

    /**
     * 合计金额,火车票金额，飞机票价;当上传航空电子客票行程单、航空电子客票行程单退票费时，此字段必填；
     */
    private BigDecimal totalAmount;

    /**
     * 合计税额；1003-航空运输电子客票行程单燃油附加费；1016-航空运输电子客票行程单退票费的燃油附加费；
     */
    private BigDecimal totalTax;

    /**
     * 价税合计，飞机合计金额，火车等总金额 当上传航空电子客票行程单、航空电子客票行程单退票费时，此字段必填；
     */
    private BigDecimal amountTax;

    /**
     * 民航发展基金
     */
    private BigDecimal civilAviationFund;

    /**
     * 是否有旅客，0：无，1：有
     */
    private String hasTraveller;

    /**
     * 乘车人，当上传航空电子客票行程单、航空电子客票行程单退票费时，此字段必填；
     */
    private String drawer;

    /**
     * 车次号或航班号 当发票未火车票时该参数为必填
     */
    private String trainNumber;

    /**
     * 发票签收状态(0-未签收,1-已签收)【默认0】
     */
    private String signStatus;

    /**
     * 火车票序列号
     */
    private String serialNum;

    /**
     * 主管税务机关名称
     */
    private String taxAuthoritiesName;

    public String getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(String invoiceType) {
        this.invoiceType = invoiceType;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    public String getElectronicNo() {
        return electronicNo;
    }

    public void setElectronicNo(String electronicNo) {
        this.electronicNo = electronicNo;
    }

    public BigDecimal getOilSurcharge() {
        return oilSurcharge;
    }

    public void setOilSurcharge(BigDecimal oilSurcharge) {
        this.oilSurcharge = oilSurcharge;
    }

    public String getDomesticOrInternational() {
        return domesticOrInternational;
    }

    public void setDomesticOrInternational(String domesticOrInternational) {
        this.domesticOrInternational = domesticOrInternational;
    }

    public String getInvoiceCode() {
        return invoiceCode;
    }

    public void setInvoiceCode(String invoiceCode) {
        this.invoiceCode = invoiceCode;
    }

    public String getInvoiceDate() {
        return invoiceDate;
    }

    public void setInvoiceDate(String invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    public String getCheckCode() {
        return checkCode;
    }

    public void setCheckCode(String checkCode) {
        this.checkCode = checkCode;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalTax() {
        return totalTax;
    }

    public void setTotalTax(BigDecimal totalTax) {
        this.totalTax = totalTax;
    }

    public BigDecimal getAmountTax() {
        return amountTax;
    }

    public void setAmountTax(BigDecimal amountTax) {
        this.amountTax = amountTax;
    }

    public BigDecimal getCivilAviationFund() {
        return civilAviationFund;
    }

    public void setCivilAviationFund(BigDecimal civilAviationFund) {
        this.civilAviationFund = civilAviationFund;
    }

    public String getHasTraveller() {
        return hasTraveller;
    }

    public void setHasTraveller(String hasTraveller) {
        this.hasTraveller = hasTraveller;
    }

    public String getDrawer() {
        return drawer;
    }

    public void setDrawer(String drawer) {
        this.drawer = drawer;
    }

    public String getTrainNumber() {
        return trainNumber;
    }

    public void setTrainNumber(String trainNumber) {
        this.trainNumber = trainNumber;
    }

    public String getSignStatus() {
        return signStatus;
    }

    public void setSignStatus(String signStatus) {
        this.signStatus = signStatus;
    }

    public String getSerialNum() {
        return serialNum;
    }

    public void setSerialNum(String serialNum) {
        this.serialNum = serialNum;
    }

    public String getTaxAuthoritiesName() {
        return taxAuthoritiesName;
    }

    public void setTaxAuthoritiesName(String taxAuthoritiesName) {
        this.taxAuthoritiesName = taxAuthoritiesName;
    }
}
